package org.stvd.repository.common;

import java.util.List;
import java.util.Map;

import org.stvd.core.dto.QueryResult;
import org.stvd.entities.common.CodeTable;

public interface CodeTableDao {
    
    /**
     * 根据条件获取对象信息
     * @param tableName 表名
     * @param id 主键ID
     * @return
     * @throws Exception
     */
    CodeTable findById(String tableName, String id) throws Exception;
    
    /**
     * 根据条件获取列表信息
     * @param tableName 表名
     * @param id 主键ID
     * @param name 名称
     * @param pym 拼音码
     * @return
     * @throws Exception
     */
    List<CodeTable> findAll(String tableName, String id, String name, String pym) throws Exception;
    
    /**
     * 插入一条数据
     * @param tableName 表名
     * @param id 主键ID
     * @param name 名称
     * @param pym 拼音码
     * @param pxh 排序号
     * @return
     * @throws Exception
     */
    int insert(String tableName, String id, String name, String pym, int pxh) throws Exception;
    
    /**
     * 更新一条数据
     * @param tableName 表名
     * @param id 主键ID
     * @param name 名称
     * @param pym 拼音码
     * @param pxh 排序号
     * @return
     * @throws Exception
     */
    int update(String tableName, String id, String name, String pym, int pxh) throws Exception;
    
    /**
     * 删除一条数据
     * @param tableName 表名
     * @param id 主键ID
     * @return
     * @throws Exception
     */
    int delete(String tableName, String id) throws Exception;
    
    /**
     * 根据条件查询集合
     * @param tableName 表名
     * @param start 起始数
     * @param limit 限制数
     * @param id 主键ID
     * @param name 名称
     * @param pym 拼音码
     * @return
     * @throws Exception
     */
    QueryResult<CodeTable> getQueryResult(String tableName, int start, int limit, String id, String name, String pym) throws Exception;
    
    /**
     * @Description: 查询公共码表列表
     * @return
     */
    List<Map<String, Object>> listAllCodeTable(String tableName);

    /**
     * @Description: 查询码表信息
     * @param tableName 码表ID
     * @return
     */
    Map<String, Object> getCodeTableByName(String tableName);

    /**
     * @Description: 新增码表信息
     * @param tableName 码表ID
     * @param tableComment 码表名称
     */
    void insertCodeTable(String tableName, String tableComment);
    
    /**
     * @Description: 更新码表信息
     * @param tableName 码表ID
     * @param tableComment 码表名称
     */
    void updateCodeTable(String tableName, String tableComment);
    
    /**
     * @Description: 删除码表
     * @param tableName 码表ID
     */
    void deleteCodeTable(String tableName);
}
